// function prevent(e) {
//   if (e.preventDefault) {
//     e.preventDefault()
//   } else {
//     e.returnValue = false
//   }
// }

// 整数
export const int = function(el, binding, vnode) {
  el.addEventListener('input', function(e) {
    e = e || window.event
    let value = e.target.value
    value = value ? value.replace(/[^0-9]/g, '') : ''
    // 去掉首位的0
    e.target.value = value ? Number(value) + '' : ''
    vnode.componentInstance.$emit('input', e.target.value)
  })
}

// 金额
export const money = function(el, binding, vnode) {
  el.addEventListener('input', function(e) {
    e = e || window.event
    let value = e.target.value
    value = value.replace(/[^\d.]/g, '')
      .replace(/^\./g, '')
      .replace(/^0+/, '0')
      .replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
      .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
    e.target.value = value
    vnode.componentInstance.$emit('input', e.target.value)
  })
}

export const point2 = function(el) {
  const _inp = el.getElementsByTagName('input')[0]
  const _val = _inp.value
  _inp.value = +_val ? (+_val).toFixed(2) : ''
  el.addEventListener('change', function(e) {
    e = e || window.event
    const value = e.target.value
    e.target.value = +value ? (+value).toFixed(2) : '0.00'
    e.target.dispatchEvent(new Event('input'))
  })
}
//   nPoint: function(el, binding, vnode) {
//     const _inp = el.getElementsByTagName('input')[0]
//     const _val = _inp.value
//     _inp.value = +_val ? (+_val).toFixed(binding.value.point || 2) : (+0).toFixed(binding.value.point || 2)
//     let value
//     el.addEventListener('keypress', function(e) {
//       if (binding.value.length) {
//         e = e || window.event
//         if (e.target.value.indexOf('.') !== -1 && e.target.value.length >= (binding.value.length + (binding.value.point || 2) + 1)) {
//           prevent(e)
//         }
//       }
//     })
//     el.addEventListener('input', function(e) {
//       if (binding.value.length) {
//         const reg1 = new RegExp(`^\\d{0,${binding.value.length}}`, 'g')
//         const reg = new RegExp(`^(\\d{0,${binding.value.length}})(\\.?\\d{0,${binding.value.point || 2}})`, 'g')
//         value = e.target.value.indexOf('.') !== -1 ? e.target.value.match(reg)[0] : e.target.value.match(reg1)[0]
//       } else {
//         value = e.target.value.match(new RegExp(`^\\d*(\\.?\\d{0,${binding.value.point || 2}})`, 'g'))[0]
//       }
//       e.target.value = value.length > 1 && value.substr(0, 1) === '0' && value.substr(1, 1) !== '.' ? value.replace(value.substr(0, 1), '') : value
//       vnode.componentInstance.$emit('input', e.target.value)
//     })
//     el.addEventListener('change', function(e) {
//       e.target.value = (+value).toFixed(binding.value.point || 2)
//       e.target.dispatchEvent(new Event('input'))
//     })
//   },
//   point2init: function(el, binding) {
//     const specific = Number(binding.value) || 2
//     el.addEventListener('change', function(e) {
//       e = e || window.event
//       let value = e.target.value
//       e.target.value = (+value).toFixed(specific) || null
//     })
//   },
//   point: function(el, {value: {precision=1, formatEmpty=false, length}}){
//     let _inp = el.getElementsByTagName('input')[0]
//     const _val = _inp.value
//     if(_val || formatEmpty){
//       _inp.value = (+_val).toFixed(precision)
//     }
//
//     el.addEventListener('keypress', function(e){
//       e = e || window.event
//       if(length){
//         let value = e.target.value || ''
//         let intLength = value.split('.')[0].length
//         if(intLength >= length){
//           prevent(e)
//         }
//       }
//     })
//
//     el.addEventListener('change', function(e) {
//       e = e || window.event
//       let value = e.target.value
//       if(value || formatEmpty){
//         e.target.value = (+value).toFixed(precision)
//         // 直接更新input的值不会触发input的model修改
//         e.target.dispatchEvent(new Event('input'));
//       }
//     })
//   },
//   inputRule: function(el, binding) {
//     const rule = binding['value']
//     if (['onlyInteger', 'point2'].indexOf(rule) > -1) {
//       INPUT_LIMIT[rule](el)
//     } else {
//       InputRule(el, rule)
//     }
//   },
//   money: function(el, binding) {
//     // 默认值，几位小数， 是否支持负数
//     const { defaultValue = '', precision = 2, negative = false, zero = false } = (binding.value || {})
//     let _inp = el.getElementsByTagName('input')[0]
//     const _val = _inp.value
//     if (zero) {
//       if (value === 0 || value === '0') {
//         _inp.value = value
//         _inp.dispatchEvent(new Event('input'));
//       }
//      } else {
//       _inp.value = +_val ? (+_val).toFixed(precision) : defaultValue
//       _inp.dispatchEvent(new Event('input'));
//      }
//     el.addEventListener('keypress', function(e){
//       e = e || window.event
//       let value = e.target.value || ''
//       let pressKey = e.key
//       const index = getInputIndex(e.target)
//       const newValue = value.slice(0, index) + pressKey + value.slice(index)
//       // console.log('newValue', newValue)
//       const firstNum = zero ? '0' : '1'
//       const regStr = precision < 1 ? `^[${firstNum}-9]\\d*$` : `(^[${firstNum}-9]\\d*(\\.\\d{0,${precision}})?$)|(^0(\\.\\d{0,${precision}})?$)`
//       let priceReg = new RegExp(regStr)
//       if (negative) {
//         // 允许负数
//         if (/^\-/.test(newValue)) {
//           const str = newValue.slice(1)
//           if (str && !priceReg.test(str) && !e.ctrlKey) {
//             return prevent()
//           }
//         } else {
//           if (!priceReg.test(newValue)  && !e.ctrlKey) {
//             return prevent()
//           }
//         }
//       } else {
//         if (!priceReg.test(newValue)  && !e.ctrlKey) {
//           return prevent()
//         }
//       }
//       function prevent() {
//         if (e.preventDefault) {
//           e.preventDefault()
//         } else {
//           e.returnValue = false
//         }
//       }
//       function getInputIndex(el) {
//         let index = el.value.length
//         try {
//           if (el.selectionStart) {
//             index = el.selectionStart
//           } else {
//             const range = document.selection.createRange()
//             range.moveStart("character", -el.value.length)
//             index = range.text.length
//           }
//           return index
//         } catch (e) {
//           return index
//         }
//       }
//     })
//     el.addEventListener('change', function(e) {
//       e = e || window.event
//       let value = e.target.value
//       if (zero) {
//        if (value === 0 || value === '0') {
//         e.target.value = '0'
//         e.target.dispatchEvent(new Event('input'));
//        }
//       } else {
//         e.target.value = +value ? (+value).toFixed(precision) : defaultValue
//         e.target.dispatchEvent(new Event('input'));
//       }
//     })
//   }
// }
//
// function InputRule(el, rule) {
//   if (!rule) {
//     return
//   }
//   let re = null
//   let strReg = null
//   let strFn = null
//   let _inp = el.getElementsByTagName('input')[0]
//   const _val = _inp.value
//   if (rule === 'int') {
//     // 正/负整数
//     _inp.value = _val || _val === '0' ? parseInt(_val) : ''
//     re = /(\d|-)/
//     strReg = /^(-{1}|)\d*$/
//     strFn = s => {
//       if (/^(0\d+|-0)/.test(s)) {
//         return '0'
//       }
//       return s
//     }
//   }
//   if (rule === 'pos-int') {
//     _inp.value = _val || _val === '0' ? parseInt(_val) : ''
//     re = /\d/
//     strReg = /^\d*$/
//     strFn = s => {
//       if (/^(0\d+)/.test(s)) {
//         return '0'
//       }
//       return s
//     }
//   }
//   if (rule === 'int-nozero') {
//     _inp.value = _val ||  ''
//     re = /\d/
//     strReg = /^[1-9]\d*$/
//     strFn = s => {
//       return strReg.test(s) ? s : ''
//     }
//   }
//   el.addEventListener('keypress', function(e) {
//     e = e || window.event
//     let data = e.key
//     if (!re.test(data) && !e.ctrlKey) {
//       return prevent()
//     }
//     const ariaValueNow = '' + e.target.value + data
//     if (strReg) {
//       const check = strReg.test(ariaValueNow)
//       if (!check) {
//         return prevent()
//       }
//     }
//     function prevent() {
//       if (e.preventDefault) {
//         e.preventDefault()
//       } else {
//         e.returnValue = false
//       }
//     }
//   })
//   el.addEventListener('input', function(e) {
//     e = e || window.event
//     let value = e.target.value
//     // console.log(value)
//     if (strReg && !strReg.test(value)) {
//       e.target.value = ''
//     }
//     if (strFn && typeof strFn === 'function') {
//       e.target.value = strFn('' + value)
//     }
//   })
// }

